package com.ls.blog.service;

import com.ls.blog.dto.LikeDTO;
import com.ls.blog.dto.Recodes;
import com.ls.blog.dto.ArticleDTO;
import com.ls.blog.entity.Article;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ls.blog.vo.ArticleVO;
import com.ls.blog.vo.PageVO;

import java.util.List;

/**
 * <p>
 *  服务类
 * </p>
 *
 * @author lishun
 * @since 2022-01-14
 */
public interface ArticleService extends IService<Article> {

    //根据博客标题查询
    List<Article> getByTitle(String title);

    /**
     * 逻辑删除
     * @param id
     */
    void logicDeleteArticle(String id);

    /**
     * 根据id查找博客详情
     * @param id
     * @return
     */
    ArticleDTO getArticleById(String id);

    /**
     * 根据类型查找博客
     */
    Recodes getBlogByTypeId(ArticleVO articleVO);

    /**
     * 前台获得文章列表
     * @param pageVO
     * @return
     */
    Recodes<ArticleDTO> getArticleList(PageVO pageVO);


    /**
     * 后台根据分类id查找博客
     * @param articleVO
     * @return
     */
    Recodes<ArticleDTO> getArticleListByCategoryId(ArticleVO articleVO);

    /**
     * 保存文章
     * @param articleVO
     */
    void saveOrUpdateArticle(ArticleVO articleVO);

    /**
     * 删除博客
     * @param id
     */
    void deleteArticle(String id);

    /**
     * 回收站还原博客
     * @param id
     */
    void recoveryArticle(String id);

    /**
     * 文章归档
     * @param pageVO
     * @return
     */
    Recodes<Article> merge(PageVO pageVO);

    /**
     * 文章点赞
     * @param id
     */
    LikeDTO articleUp(Integer id);

    /**
     * 最新文章
     * @return
     */
    List<ArticleDTO> news();

    /**
     * 最热文章
     * @return
     */
    List<Article> hots();

    /**
     * 是否置顶
     * @param id
     */
    void top(Integer id);
}
